#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include "../inc/s_modbus_rtu.h"

static uint8_t g_quit = 0;

/**
 * @brief 信号处理函数（捕获 Ctrl+C 停止从站）
 */
void signal_handler(int sig) {
    if (sig == SIGINT) {
        printf("\nSlave: Received quit signal, stopping...\n");
        g_quit = 1;
        modbus_slave_stop();
        modbus_slave_deinit();
    }
}

int main(void) {
    // 注册信号处理
    signal(SIGINT, signal_handler);

    // 初始化从站（自动加载模板+EEPROM地址）
    if (modbus_slave_init() != 0) {
        printf("Slave: Init failed\n");
        return -1;
    }

    // 启动从站
    if (modbus_slave_start() != 0) {
        modbus_slave_deinit();
        printf("Slave: Start failed\n");
        return -1;
    }

    // 主循环：等待退出信号
    while (!g_quit) {
        sleep(1);
    }

    return 0;
}